home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctjja86.arc / SCROLL.BAS < prev    next >
BASIC Source File  |  1985-10-16  |  2KB  |  53 lines

  1.  
  2. 1 REM  *** Four-way scrolling routines for BASIC interpreter ***
  3. 2 REM  The four routines are stored in arrays for this example.
  4. 3 REM  Defining new variables after the VARPTR calls will cause
  5. 4 REM  errors because the location of the array will change.
  6. 5 REM  Each routine scrolls one character and does nto blank new
  7. 6 REM  line/column.
  8. 10 DIM DIR%(11,3) ' For 2nd dimension:  0=UP, 1=DN, 2=LF, 3=RT
  9. 20 REM Move the subroutines into arrays
  10. 30 FOR J%=0 TO 3: FOR I%=0 TO 11: READ DIR%(I%,J%): NEXT I%,J%
  11. 40 REM Define function to change 80 to 40 columns
  12. 50 DEF FNCHG%(X%)=X%\2 AND -2
  13. 100 REM Scroll up subroutine
  14. 110 DATA &HBF1E,&H0000,&HBE06,&H00A0,&H00B8,&H8EB0
  15. 120 DATA &H8ED8,&HB9C0,&H0780,&HF3FC,&H07A5,&HCB1F
  16. 200 REM Scroll down subroutine
  17. 210 DATA &HBF1E,&H0F9E,&HBE06,&H0EFE,&H00B8,&H8EB0
  18. 220 DATA &H8ED8,&HB9C0,&H0780,&HF3FD,&H07A5,&HCB1F
  19. 300 REM Scroll left subroutine
  20. 310 DATA &HBF1E,&H0000,&HBE06,&H0002,&H00B8,&H8EB0
  21. 320 DATA &H8ED8,&HB9C0,&H07CF,&HF3FC,&H07A5,&HCB1F
  22. 400 REM Scroll right subroutine
  23. 410 DATA &HBF1E,&H0F9E,&HBE06,&H0F9C,&H00B8,&H8EB0
  24. 420 DATA &H8ED8,&HB9C0,&H07CF,&HF3FD,&H07A5,&HCB1F
  25. 500 REM Check which adaptor is in use?á Change the 
  26. 501 REM segment address in the subroutines if C/G adaptor
  27. 510 DEF SEG=&H40: IF (PEEK(16) AND 48)=48 GOTO 600 ELSE FOR I%=0
  28. TO 3: DIR%(5,I%)=DIR%(5,I¼%) OR 8: NEXT I%
  29. 520 REM Text mode?
  30. 530 IF PEEK(73)>3 THEN PRINT "GRAPHIC MODE NOT ALLOWED": END
  31. 540 REM How many columns?
  32. 541 REM If 40 columns, then make changes in subroutines.
  33. 550 IF PEEK(74)=80 GOTO 600
  34. 560 FOR I%=0 TO 3: DIR%(1,I%)=FNCHG%(DIR%(1,I%))
  35. 570  IF I%<2 THEN DIR%(3,I%)=FNCHG%(DIR%(3,I%)) ELSE IF I%=3 THEN
  36. DIR%(3,3)=1996
  37. 580  DIR%(8,I%)=DIR%(8,I%)\2: NEXT I%
  38. 600 REM Set up the pointers to the subroutines
  39. 610 REM Must set these variables first so values don't change
  40. 620 USUB%=0:DSUB%=0:RSUB%=0:LSUB%=0:FAR%=0:WAY$=""
  41. 630 USUB%=VARPTR(DIR%(0,0))
  42. 640 DSUB%=VARPTR(DIR%(0,1))
  43. 650 LSUB%=VARPTR(DIR%(0,2))
  44. 660 RSUB%=VARPTR(DIR%(0,3))
  45. 1000 REM Now scroll in any direction
  46. 1010 INPUT "WHICH WAY (U,D,L,R): ",WAY$
  47. 1020 INPUT "HOW FAR: ",FAR%
  48. 1030 DEF SEG: FOR I%=1 TO FAR%
  49. 1040 IF WAY$="U" THEN CALL USUB% ELSE IF WAY$="D" THEN CALL DSUB%
  50. ELSE IF WAY$="L" THEN CALL LSUB% ELSE IF WAY$="R" THEN CALL RSUB%
  51. ELSE GOTO 1000
  52. 1050 NEXT I%
  53.